{-
	Copyright (c) 2009 Aitor Lopez Fadrique <mailto:aitorlf@gmail.com>
	All rights reserved
	Licensed under GNU LGPL v2.1

	$Id: SwissJassDeck.hs 15 2009-09-28 21:16:23Z aitorlf $

	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU Lesser General Public
	License version 2.1 (and just under that one) as published by
	the Free Software Foundation.

	This program is distributed in the hope that it will be useful,
	but without any warranty; without even the implied warranty of
	merchantability or fitness for a particular purpose. See the GNU
	Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public
	License along with this program; if not, write to the Free
	Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
	MA 02111-1307, USA.
-}

{-|
	Module		: Games.Cards.Deck.SwissJassDeck
	Copyright	: (c) Aitor Lopez Fadrique <mailto:aitorlf@gmail.com>
	License		: GNU LGPL v2.1 <http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>

	Maintainer	: Aitor Lopez Fadrique <mailto:aitorlf@gmail.com>
	Stability	: provisional
	Portability	: portable

	Definition of the Swiss Jass (36 cards) deck according to Games.Cards.Deck.

	This module defines the basic Swiss 36 cards Jass deck.
-}
module Games.Cards.Deck.SwissJassDeck(
		-- * Swiss 36 cards Jass deck
		-- ** Types defining cards and decks for the Swiss Jass deck
		SwissJassRank(..),
		SwissRank,
		SwissSuit(..),
		SwissJassCard,
		SwissCard,
		SwissJassDeck,
		SwissDeck,
		-- ** Instances of Swiss Jass decks
		swissJassDeck,
		swissDeck,
	)where

import Games.Cards.Deck
import Games.Cards.Deck.SwissClassicDeck


-- | Well-known ranks for the Swiss Jass deck.
data SwissJassRank =
		-- | 'Six' (/6/)
		Six
		-- | 'Seven' (/7/)
		| Seven
		-- | 'Eight' (/8/)
		| Eight
		-- | 'Nine' (/9/)
		| Nine
		-- | 'Banner' (/10/)
		| Banner
		-- | 'Under' (/Lower Jack/)
		| Under
		-- | 'Ober' (/Upper Jack/)
		| Ober
		-- | 'Konig' (/King/)
		| Konig
		-- | 'Sau' (/2/)
		| Sau
	deriving (Eq, Ord, Enum, Bounded, Show, Read)
instance CardRank SwissJassRank
-- | Alias @'SwissJassRank'@ as @'SwissRank'@.
type SwissRank = SwissJassRank


-- | Definition of the 36 cards Jass Swiss @'Card'@s and @'Deck'@s.

-- | Swiss Jass card type.
type SwissJassCard = Card SwissJassRank SwissSuit WildCardNone
-- | Alias @'SwissJassCard'@ as @'SwissCard'@.
type SwissCard = SwissJassCard

-- | Swiss Jass deck type.
type SwissJassDeck = Deck SwissJassRank SwissSuit WildCardNone
-- | Alias @'SwissJassDeck'@ as @'SwissDeck'@.
type SwissDeck = SwissJassDeck

-- | Swiss Jass deck instance.
swissJassDeck :: SwissJassDeck
swissJassDeck = deck

-- | Swiss deck instance.
swissDeck :: SwissJassDeck
swissDeck = swissJassDeck
